package com.atl.controller.wx.user;

import com.atl.common.BaseResponse;
import com.atl.common.ErrorCode;
import com.atl.enity.po.StockUser;
import com.atl.enity.wx.user.dto.StockUserLoginDTO;
import com.atl.service.IStockUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;

/**
 * @author: 临晖
 * @since: 2024-06-26
 */


@RestController
@RequestMapping("/wx/user/stock-user")
@Slf4j
@Api(tags = "登录注册")
public class StockUserUserController {



    @Resource
    private IStockUserService stockUserService;




    ///**
    // *
    // * 用户注册
    // *
    // * @param userRegisterRequestDTO 接受dto
    // * @return 返回用户id
    // */
    ////@ApiOperation("用户注册")
    //@PostMapping("/register")
    //public BaseResponse<Long> userRegister(@RequestBody UserRegisterRequestDTO userRegisterRequestDTO) {
    //
    //    if (userRegisterRequestDTO == null) {
    //        return BaseResponse.error("传入用户数据为空");
    //    }
    //
    //    String userAccount = userRegisterRequestDTO.getUserAccount();
    //    String userPassword = userRegisterRequestDTO.getUserPassword();
    //    String checkPassword = userRegisterRequestDTO.getCheckPassword();
    //
    //    if (StringUtils.isAnyBlank(userAccount, userPassword, checkPassword)) {
    //        return BaseResponse.error("账号/密码/校验密码为空");
    //    }
    //    long id = userService.userRegister(userAccount, userPassword, checkPassword);
    //
    //
    //    return BaseResponse.success(id);
    //}


    /**
     *
     * 用户登录
     *
     * @param stockUserLoginDTO 用户传参
     * @param request http
     * @return 返回脱敏用户信息
     */
    @ApiOperation("用户登录")
    @PostMapping("/login")
    public BaseResponse<StockUser> userLogin(@RequestBody StockUserLoginDTO stockUserLoginDTO, HttpServletRequest request) {

        //校验参数
        if (stockUserLoginDTO == null) {
            return BaseResponse.errorResult( ErrorCode.ARGUMENT_ERROR);
        }

        //获取用户名密码
        String userAccount = stockUserLoginDTO.getUserUid();
        String userPassword = stockUserLoginDTO.getPswd();


        if (StringUtils.isAnyBlank(userAccount, userPassword)) {
            return BaseResponse.errorResult( -1, "用户账号或密码为空");
        }

        //登录
        StockUser user = stockUserService.stockUserLogin(userAccount, userPassword, request);

        return BaseResponse.okResult(user);

    }





    //
    //
    ///**
    // *
    // * 获取用户登录状态
    // *
    // * @param request
    // * @return
    // */
    //@GetMapping("/current")
    //public BaseResponse<User> getCurrentUser(HttpServletRequest request) {
    //    User user = (User)request.getSession().getAttribute(UserConstant.USER_LOGIN_STATE);
    //
    //    if (user == null) {
    //        return BaseResponse.error("session中用户状态为空");
    //    }
    //
    //    // todo 这里后来要确认用户状态，如果用户是被封号的，那么是不能登录，没有状态的
    //    //脱敏
    //    return BaseResponse.success(userService.getSafteUser(userService.lambdaQuery().eq(User::getId, user.getId()).one()));
    //}
    //
    //
    ///**
    // *
    // * 退出登录
    // *
    // * @param request
    // * @return
    // */
    //@PostMapping("/outLogin")
    //public BaseResponse<Boolean> outLogin(HttpServletRequest request) {
    //    request.getSession().removeAttribute(UserConstant.USER_LOGIN_STATE);
    //    return BaseResponse.success(true);
    //}
    //
    //
    ///**
    // *
    // * 鉴定权限
    // *
    // * @param request
    // * @return
    // */
    //private boolean isAdmin(HttpServletRequest request) {
    //    User user = (User)request.getSession().getAttribute(UserConstant.USER_LOGIN_STATE);
    //
    //    // todo 后期需要处理，这里需要抛出异常
    //    if (user == null || user.getUserRole() != UserConstant.ADMIN_ROLE) {
    //        log.info("权限不够，仅仅管理员可操作");
    //        return false;
    //    }
    //
    //    return true;
    //}
}